Lyapunov Stability-Based Control Design

  • Step 1: Select a trial (candidate) Lyapunov function (with the properties $V(x) >0$, $V(0) = 0, $, $V(x)$ is continuous)
  • Step 2: Obtain $\dot{V}(x)$, subtitute $\dot{x} = f(x)$ in $\dot{V}(x)$ (we obtain $V(x,u)$, check relative degree, if $r_d = 1 \Longrightarrow \frac{\partial \dot{V}(x,u)}{\partial u} \neq 0 $ then continue, if not return to step 1
  • Step 3: Select a feedback control law $u = u(x)$ which ensures that $\dot{V} (x) < 0$ for $x \neq 0$

Typically, $u(x)$ is a nonlinear function of x that contains some parameters and gains which can be selected to make $\dot{V} (x) < 0$, and thus ensures that the closed-loop system is asymptotically stable.


In [6]:
from tools import*
x1,x2,x3,x4,x5,x6 = def_states('x',6,True)
u1,u2,u3 = def_states('u',3,True)

In [16]:
x1d = x**2
x2d = u1
x3d = []
x4d = []
x5d = []
x6d = []

v = (x1**2 + x2**2)/2

vd = v.diff(t)
vd


Out[16]:
$$\operatorname{x_{1}}{\left (t \right )} \frac{d}{d t} \operatorname{x_{1}}{\left (t \right )} + \operatorname{x_{2}}{\left (t \right )} \frac{d}{d t} \operatorname{x_{2}}{\left (t \right )}$$

In [17]:
vd = vd.subs(Derivative(x1), x1d)
vd = vd.subs(Derivative(x2), x2d)


Out[17]:
$$\operatorname{u_{1}}{\left (t \right )} \operatorname{x_{2}}{\left (t \right )} + \operatorname{x_{1}}{\left (t \right )} \operatorname{x_{2}}^{2}{\left (t \right )}$$

In [ ]: